iT邦幫忙

2022 iThome 鐵人賽

DAY 18
0

Day18-[Ruby]block是什麼?

block可以用{}(優先順位),
或do ...end(順位較後)的表現方式,
大多如寄生蟲般依附在其它的方法或物件後。

block不是物件

是一個程式碼區塊,
不是物件無法單獨存在,
會造成語法錯誤。

{ puts "Hello, Ruby" }     # 語法錯誤

block不是參數,不會主動執行

和前面講過的hash不同,
雖然都使用大括號,
但block不是參數。

def say_hello_to(name)
  puts "hi #{name}"
end

say_hello_to("小花") {
  puts "有執行此Block就能看到這句話"
}

#只印出 hi 小花

此例子name "小花"才是參數,
block不會主動執行。

使用yield方法執行block

我們想讓block被執行,
可以搭配yield方法,
控制權將暫時交給block,
等block執行完後再把控制權交回來。

def say_hello_to(name)
  yield
  puts "hi #{name}"
end

say_hello_to("小花") {
  puts "有執行此Block就能看到這句話"
}

#印出:
有執行此Block就能看到這句話
hi 小花
tags: Ruby block yield

上一篇
Day17-[Ruby]存取限制比一比.Public, Protected, Private的比較(Part II)
下一篇
Day19-[Ruby]block物件化:Proc, lambda
系列文
從零開始的工程師轉職之路.新手學Ruby / Ruby on Rails遇到的問題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言